package com.ruoyi.tb.lmt.service;

import com.ruoyi.tb.lmt.domain.TbLocomotive;
import com.ruoyi.tb.lmt.domain.vo.*;
import com.ruoyi.tb.lmt.domain.bo.TbLocomotiveBo;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.core.domain.PageQuery;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

/**
 * 大机配属Service接口
 *
 * @author ruoyi
 * @date 2023-11-30
 */
public interface ITbLocomotiveService {

    /**
     * 查询大机配属
     */
    TbLocomotiveVo queryById(Long ID);

    /**
     * 查询大机配属列表
     */
    TableDataInfo<TbLocomotiveVo> queryPageList(TbLocomotiveBo bo, PageQuery pageQuery);

    /**
     * 查询大机配属列表
     */
    List<TbLocomotiveVo> queryList(TbLocomotiveBo bo);

    /**
     * 新增大机配属
     */
    Boolean insertByBo(TbLocomotiveBo bo);

    /**
     * 修改大机配属
     */
    Boolean updateByBo(TbLocomotiveBo bo);

    /**
     * 校验并批量删除大机配属信息
     */
    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);

    TableDataInfo<TbLocomotiveVo> lmtListByStatus(TbLocomotiveBo bo, PageQuery pageQuery);

    ArrayList<LmtNumberVo> selectByLmtType(String lmtType);

    ArrayList<LmtNumberVo> selectByLmtNumber(String lmtNumber);

    ArrayList<LmtNumberVo> selectBy();

    Long selectByLmtId(Long lmtRepairId);

    TbLocomotiveVo selectLocomotive(String lmtNumber);

    LocNumberVo selectLocNumber();

    CarNumberVo selectCarNumber();

    int updateByBoLmtNumber(TbLocomotiveBo lmtBo);

    boolean existsById(Long id);

    void export(HttpServletRequest request, HttpServletResponse response);

    TableDataInfo<TbLocomotiveVo> listLocomotive(TbLocomotiveBo bo, PageQuery pageQuery);


    List<TbLocomotiveDueVo> listLocomotive(TbLocomotiveBo bo);
    List<TbLocomotiveVo> listLocomotiveExport(TbLocomotiveBo bo);

    int countAll();

    TableDataInfo<TbLocomotiveVo> getDue(TbLocomotiveBo bo, PageQuery pageQuery);
}
